home *** CD-ROM | disk | FTP | other *** search
/ Die Speccy' 97 / Die Speccy' 97.iso / amiga_system / the_aminet / util / app / autoappmenu3.lha / AutoAppMenu / CreateAlias / CreateAlias.c < prev    next >
C/C++ Source or Header  |  1995-05-04  |  2KB  |  81 lines

  1. /* CreateAlias.c, (c) 1995 Axel Behr */
  2.  
  3. #include <exec/types.h>
  4. #include <workbench/startup.h>
  5. #include <proto/dos.h>
  6. #include <proto/icon.h>
  7. #include <proto/intuition.h>
  8.  
  9. #include <stdlib.h>
  10. #include <stdio.h>
  11.  
  12. #include <string.h>
  13.  
  14. #define PBUFLEN    100
  15.  
  16. void main(int argc, char **argv)
  17. {
  18.     struct WBStartup *argmsg;
  19.     struct WBArg *wb_arg;
  20.     LONG i;
  21.     BPTR givenpath = 0;
  22.     int argnum;
  23.     struct DiskObject *aliasdob;
  24.  
  25.     UBYTE OldName[PBUFLEN], AliasName[PBUFLEN];
  26.     static const UBYTE ver[] = "$VER: CreateAlias 1.0 " __AMIGADATE__;
  27.     
  28.     if (argc==0)
  29.     {
  30.         argmsg = (struct WBStartup *)argv ;
  31.         wb_arg = argmsg->sm_ArgList;
  32.         argnum = argmsg->sm_NumArgs;
  33.         
  34.         if (argnum > 1)
  35.         {
  36.             wb_arg++;  // skip program icon
  37.             argnum--;
  38.             if ( (wb_arg->wa_Name[0] == '\0') && (argnum > 1) )
  39.             {
  40.                 givenpath = wb_arg->wa_Lock;
  41.                 wb_arg++;
  42.                 argnum--;
  43.             }
  44.         }
  45.             
  46.         for (i = 0; i < argnum; i++, wb_arg++)
  47.         {
  48.             OldName[0] = '\0';
  49.             NameFromLock(wb_arg->wa_Lock, OldName, PBUFLEN);
  50.  
  51.             if (wb_arg->wa_Name[0] != '\0')
  52.                 AddPart(OldName, wb_arg->wa_Name, PBUFLEN);
  53.  
  54.             if (givenpath)
  55.             {
  56.                 NameFromLock(givenpath, AliasName, PBUFLEN);
  57.                 if (wb_arg->wa_Name[0] != '\0')
  58.                     AddPart(AliasName, wb_arg->wa_Name, PBUFLEN);
  59.                 else
  60.                     AddPart(AliasName, FilePart(OldName), PBUFLEN);
  61.             }
  62.             else
  63.                 strcpy(AliasName, OldName);
  64.             strcat(AliasName, "_Alias");
  65.             
  66.             if (MakeLink(AliasName, (LONG)OldName, TRUE))
  67.             {
  68.                 if (aliasdob=GetDiskObjectNew(OldName))
  69.                 {
  70.                     aliasdob->do_CurrentX = NO_ICON_POSITION;
  71.                     aliasdob->do_CurrentY = NO_ICON_POSITION;
  72.                     PutDiskObject(AliasName, aliasdob);
  73.                     FreeDiskObject(aliasdob);
  74.                 }
  75.             }
  76.             else 
  77.                 DisplayBeep(NULL);
  78.         }
  79.     }
  80. }
  81.